package com.zang.blogz.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zang.blogz.entity.Category;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zang.blogz.model.output.admin.AdminCategoryVO;
import com.zang.blogz.model.output.TagArticleVO;
import com.zang.blogz.model.output.CategoryVO;
import com.zang.blogz.result.Result;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author 朵橙i
 * @since 2022-06-17
 */
public interface CategoryService extends IService<Category> {

    /**
     * 分类页显示
     *
     * @return
     */
    CategoryVO getCategoryList();

    /**
     * 根据id查询分类下所有文章
     *
     * @param categoryId
     * @return
     */
    List<TagArticleVO> getCategoryArticleVoById(Integer categoryId);

    /**
     * 根据文章id查询分类名字
     */
    String getCategoryNameByCategoryId(Integer id);

    /**
     * 获得管理员页page
     *
     * @param categoryName 分类名
     * @param page         分页page
     * @return 管理员分类页page
     */
    IPage<AdminCategoryVO> getCategoryPage(String categoryName, Page<Category> page);

    /**
     * 编辑或新增分类
     *
     * @param category 分类
     * @return 分类
     */
    Result<Category> editOrSaveCategory(Category category);

    /**
     * 删除分类
     *
     * @param categoryId 分类id
     * @return
     */
    Result<String> deleteCategoryById(Integer categoryId);


}
